/**
 * 
 */
package gui;

import java.util.ArrayList;

import javax.swing.JComboBox;

import helden.plugin.werteplugin.PluginZauberInfo;
import helden.plugin.werteplugin2.PluginHeld2;
import main.Controller;
import backend.AktiverZauber;
import backend.ZauberVariante;

/**
 * @author Christian
 * @since 0.15d
 */
public class HeldenUpdateController {

	/**
	 * 
	 */
	private HeldenUpdateZauber heldenPanel = null;

	/**
	 * 
	 */
	private int index = 0;

	/**
	 * 
	 */
	private PluginHeld2 held = null;

	/**
	 * 
	 */
	private AktiverZauber zauber = null;

	/**
	 * 
	 * @param panel JPanel
	 * @param held Aktuelle Held 
	 * @param zauberIndex Index des bearbeiteten Zaubers
	 */
	public HeldenUpdateController(HeldenUpdateZauber panel, PluginHeld2 held, int zauberIndex) {

		this.heldenPanel = panel;
		this.held = held;
		this.index = zauberIndex;
		zauber = Controller.getDatenController().getAlleZauberByHeldenId(this.held.getHeldenID())
							.get(index);
	}

	/**
	 * Aktualisiert die Textareas
	 */
	public void update() {

		ZauberVariante zauberVariante = (ZauberVariante) heldenPanel.getJVariantenAuswahlComboBox()
							.getSelectedItem();
		heldenPanel.getJAnmerkungTextArea().setText(zauberVariante.getAnmerkung());
		heldenPanel.getJKommentarTextArea().setText(zauberVariante.getKommentar());
		heldenPanel.getJKostenTextArea().setText(zauberVariante.getKosten());
		heldenPanel.getJReichweiteTextArea().setText(zauberVariante.getReichweite());
		heldenPanel.getJWirkungsDauerTextArea().setText(zauberVariante.getWirkungsDauer());
		heldenPanel.getJZauberDauerTextArea().setText(zauberVariante.getZauberDauer());
	}

	/**
	 * Setzt die Textareas zurück
	 */
	public void reset() {

		heldenPanel.getJZauberNameLabel().setText(zauber.toString());
		heldenPanel.getJRepLabel().setText(zauber.getZauber().getRepraesentation());
		PluginZauberInfo zauber2 = zauber.getZauber();
		heldenPanel.getJAnmerkungTextArea().setText(zauber2.getAnmerkungen());
		heldenPanel.getJKommentarTextArea().setText(zauber2.getKommentar());
		heldenPanel.getJKostenTextArea().setText(zauber2.getKosten());
		heldenPanel.getJReichweiteTextArea().setText(zauber2.getReichweite());
		heldenPanel.getJWirkungsDauerTextArea().setText(zauber2.getWirkungsdauer());
		heldenPanel.getJZauberDauerTextArea().setText(zauber2.getZauberdauer());
	}

	/**
	 * Diese Methode füllt die VariantenAuswahlCombobox mit daten
	 */
	public void fillVariantenAuswahl() {

		JComboBox comboBox = heldenPanel.getJVariantenAuswahlComboBox();
		comboBox.removeAllItems();
		ArrayList<ZauberVariante> list = Controller.getDatenController()
							.getVariantenByZauberUAlleName(zauber.getZauber().getZauberName(),
												zauber.getZauber().getRepraesentation());
		if (list.size() > 0) {
			comboBox.setEnabled(true);
			for (ZauberVariante vari : list) {
				comboBox.addItem(vari);
			}
		} else {
			comboBox.setEnabled(false);
		}
	}

	/**
	 * Diese Methode wird vom speichern Button aufgrufen und speichert die Daten
	 * ins HeldenTool
	 */
	public void save() {

		PluginZauberInfo zauber2 = zauber.getZauber();
		zauber2.setAnmerkungen(heldenPanel.getJAnmerkungTextArea().getText());
		zauber2.setKommentar(heldenPanel.getJKommentarTextArea().getText());
		zauber2.setKosten(heldenPanel.getJKostenTextArea().getText());
		zauber2.setReichweite(heldenPanel.getJReichweiteTextArea().getText());
		zauber2.setWirkungsdauer(heldenPanel.getJWirkungsDauerTextArea().getText());
		zauber2.setZauberdauer(heldenPanel.getJZauberDauerTextArea().getText());
	}
}
